package com.niceweather.android.ui.weather

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Transformations
import androidx.lifecycle.ViewModel
import com.niceweather.android.logic.dao.Repository
import com.niceweather.android.logic.model.Location

/**
 *
 * Created by admin on 2020/6/19
 */
class WeatherViewModel : ViewModel() {

    private val locationLiveData = MutableLiveData<Location>()

    /**
     * 定义以下3个变量 都是和界面相关的数据
     * 放到ViewModel中保证它们在手机屏幕发生旋转的时候不会丢失，UI层代码中会使用到
     */
    var locationLng = ""
    var locationLat = ""
    var placeName = ""

    /**
     * Transformations的 switchMap() 来观察 locationLiveData 对象
     *  在switchMap()方法的转换函数中调用仓库层中定义的refreshWeather()方法，
     *  这样仓库层返回的LiveData对象就可以转换成一个可供Activity观察的LiveData对象了
     */
    val weatherLiveData = Transformations.switchMap(locationLiveData) {
        Repository.refreshWeather(it.lng, it.lat)
    }

    /**
     * 刷新天气信息
     */
    fun refreshWeather(lng: String, lat: String) {
        locationLiveData.value = Location(lng, lat)
    }


}